#include "Equipement.h"
#include "Combinaison.h"
#include "Chapeau.h"
#include "Bague.h"
#include "Collier.h"
#include "Ceinture.h"
#include "Armure.h"
#include "Bottes.h"
#include "Charactere.h"
#include "ObjetEquipable.h"
#include "Objet.h"
#include <sstream>
#include <iomanip>
/**
 * Constructeur
 */

Equipement::Equipement(Charactere & p){
    this->perso=&p;
    this->myArmure=NULL;
    this->myBague1=NULL;
    this->myBague2=NULL;
    this->myBottes=NULL;
    this->myCeinture=NULL;
    this->myChapeau=NULL;
    this->myCollier=NULL;
    this->myCombinaison=NULL;
}

/**
 * Fonction qui enregistre l'equipement courant en tant que preset
 */
void Equipement::Enregistrer_Preset(){
    Equipement eq(*(this->perso));
    if (this->myArmure!=NULL) eq.myArmure=new  Armure(this->myArmure->getNom(),this->myArmure->getBonus_fur(),this->myArmure->getBonus_int(),this->myArmure->getBonus_def(),this->myArmure->getPoids());
    if (this->myBague1!=NULL) eq.myBague1=new  Bague(this->myBague1->getNom(),this->myBague1->getBonus_fur(),this->myBague1->getBonus_int(),this->myBague1->getBonus_def(),this->myBague1->getPoids());
    if (this->myBague2!=NULL) eq.myBague2=new  Bague(this->myBague2->getNom(),this->myBague2->getBonus_fur(),this->myBague2->getBonus_int(),this->myBague2->getBonus_def(),this->myBague2->getPoids());
    if (this->myBottes!=NULL) eq.myBottes=new  Bottes(this->myBottes->getNom(),this->myBottes->getBonus_fur(),this->myBottes->getBonus_int(),this->myBottes->getBonus_def(),this->myBottes->getPoids());
    if (this->myCeinture!=NULL) eq.myCeinture=new Ceinture(this->myCeinture->getNom(),this->myCeinture->getBonus_fur(),this->myCeinture->getBonus_int(),this->myCeinture->getBonus_def(),this->myCeinture->getPoids());
    if (this->myChapeau!=NULL) eq.myChapeau=new Chapeau(this->myChapeau->getNom(),this->myChapeau->getBonus_fur(),this->myChapeau->getBonus_int(),this->myChapeau->getBonus_def(),this->myChapeau->getPoids());
    if (this->myCollier!=NULL) eq.myCollier=new Collier(this->myCollier->getNom(),this->myCollier->getBonus_fur(),this->myCollier->getBonus_int(),this->myCollier->getBonus_def(),this->myCollier->getPoids());
    if (this->myCombinaison!=NULL) eq.myCombinaison=new Combinaison(this->myCombinaison->getNom(),this->myCombinaison->getBonus_fur(),this->myCombinaison->getBonus_int(),this->myCombinaison->getBonus_def(),this->myCombinaison->getPoids());
    this->Presets.push_back(eq);
}
/**
 * Fonction qui rappel un preset en les affichant tous puis en demandant à l'utilisateur de saisir le preset qu'il desire
 */
bool Equipement::Rappeler()
{
    vector<Equipement >::iterator i;
    i=this->Presets.begin();
    cout << "Les presets suivants sont disponibles:"  << endl;
    for(int j =0; j< Presets.size(); j++){
        cout << "Preset numéro " << j << endl;
        if(i->myCombinaison!=NULL) cout << i->myCombinaison->getNom() << endl;
        if(i->myChapeau!=NULL) cout << i->myChapeau->getNom() << endl;
        if(i->myBague1!=NULL) cout << i->myBague1->getNom() << endl;
        if(i->myBague2!=NULL) cout << i->myBague2->getNom() << endl;
        if(i->myCollier!=NULL) cout << i->myCollier->getNom() << endl;
        if(i->myCeinture!=NULL) cout << i->myCeinture->getNom() << endl;
        if(i->myArmure!=NULL) cout << i->myArmure->getNom() << endl;
        if(i->myBottes!=NULL) cout << i->myBottes->getNom() << endl << endl;
        i++;
    }
    string r;
    int index;
    cout << "Quel preset voulez vous equiper?" << endl;
    getline(cin, r);
    std::istringstream iss( r );
    iss >> index;
    if (index >= 0 && index < this->Presets.size()){
        if(i->myCombinaison!=NULL) this->equiper((ObjetEquipable&)*(i->myCombinaison));
        if(i->myChapeau!=NULL) this->equiper((ObjetEquipable&)*(i->myChapeau));
        if(i->myBague1!=NULL) this->equiper((ObjetEquipable&)*(i->myBague1));
        if(i->myBague2!=NULL) this->equiper((ObjetEquipable&)*(i->myBague2));
        if(i->myCollier!=NULL) this->equiper((ObjetEquipable&)*(i->myCollier));
        if(i->myCeinture!=NULL) this->equiper((ObjetEquipable&)*(i->myCeinture));
        if(i->myArmure!=NULL) this->equiper((ObjetEquipable&)*(i->myArmure));
        if(i->myBottes!=NULL) this->equiper((ObjetEquipable&)*(i->myBottes));
    }
    else cout << "Preset non existant" << endl;
    this->updateStats();
}
/**
 * Fonction qui equipe un objet passé en paramètre à l'equipement courant
 */
void Equipement::equiper(ObjetEquipable &o){
    using namespace std;
    string reponse;
    int new_p = o.getPoids()+this->perso->getPoidsPorte();
    switch (o.getType()){
        case Objet::ARMURE:
            if (this->myCombinaison != NULL){ cout << "Combinaison équipé, voulez vous l'enlever? O/N" << endl;
            getline(cin, reponse);
            if (reponse.compare("O") == 0) {
                new_p -= this->myCombinaison->getPoids();
                this->desequiper(*this->myCombinaison);
            }
            else if (reponse.compare("N") == 0)break;
            }
            if (this->myArmure == NULL) if(new_p<this->perso->getChargeMax()) this->myArmure = (Armure*)&o;
                                        else{
                                        cout<<"Objet trop lourd pour etre equipe"<<endl;
                                        break;
                                        }
            else {
                cout << "Objet déjà en place  " << this->myArmure->getNom() << endl << "Voulez vous le remplacer? O/N" << endl;
                getline(cin,reponse);
                if (reponse.compare("O") == 0) if (new_p-this->myArmure->getPoids()<this->perso->getChargeMax()){
                    this->desequiper(*this->myArmure);
                    this->myArmure= (Armure*)&o;
                }
                else {
                    cout << "Objet trop lourd pour etre equipe" << endl;
                }

            }
        break;
        case Objet::BAGUE:
                        if (this->myBague1 == NULL) if(new_p<this->perso->getChargeMax()) this->myBague1 = (Bague*)&o;
                                                    else{
                                                        cout<<"Objet trop lourd pour etre equipe"<<endl;
                                                        break;
                                                        }
                        else
                        if (this->myBague2 == NULL) if(new_p<this->perso->getChargeMax()) this->myBague2 = (Bague*)&o;
                                                    else{
                                                        cout<<"Objet trop lourd pour etre equipe"<<endl;
                                                        break;
                                                        }

            else {
                cout << "Bagues déjà en place: 1: " << this->myBague1->getNom()
                        << "2 : " << this->myBague2 << endl
                        << "Voulez vous le remplacer? O/N" << endl;
                getline(cin,reponse);

                if (reponse.compare("O") == 0){
                    cout << "laquel voulez vous remplacer ? 1/2" << endl;
                    getline(cin,reponse);
                    if (reponse.compare("1") == 0)if (new_p-this->myBague1->getPoids()<this->perso->getChargeMax()){
                    this->desequiper(*this->myBague1);
                    this->myBague1 = (Bague*) &o;
                    }
                                                    else {
                                                    cout << "Objet trop lourd pour etre equipe" << endl;
                                                    }
                    if (reponse.compare("2") == 0)if (new_p-this->myBague2->getPoids()<this->perso->getChargeMax()){
                    this->desequiper(*this->myBague2);
                    this->myBague2 = (Bague*) &o;
                    }
                                                    else {
                                                    cout << "Objet trop lourd pour etre equipe" << endl;
                                                    }
                }

            }
        break;
        case Objet::BOTTES:
            if (this->myCombinaison != NULL){ cout << "Combinaison équipé, voulez vous l'enlever? O/N" << endl;
            getline(cin, reponse);
            if (reponse.compare("O") == 0) {
                new_p -= this->myCombinaison->getPoids();
                this->desequiper(*this->myCombinaison);
                }
            else if (reponse.compare("N") == 0)break;
            }

            if (this->myBottes == NULL) if(new_p<this->perso->getChargeMax()) this->myBottes = (Bottes*)&o;
                                        else{
                                        cout<<"Objet trop lourd pour etre equipe"<<endl;
                                        break;
                                        }
            else {
                
                cout << "Objet déjà en place  " << this->myBottes->getNom() << endl << "Voulez vous le remplacer? O/N" << endl;
                getline(cin,reponse);
                if (reponse.compare("O") == 0)if (new_p-this->myBottes->getPoids()<this->perso->getChargeMax()){
                    this->desequiper(*this->myBottes);
                    this->myBottes=(Bottes*) &o;
                }
                else {
                    cout << "Objet trop lourd pour etre equipe" << endl;
                }
            }
        break;
        case Objet::CEINTURE:
            if (this->myCombinaison != NULL){ cout << "Combinaison équipé, voulez vous l'enlever? O/N" << endl;
            getline(cin, reponse);
            if (reponse.compare("O") == 0) {
                new_p -= this->myCombinaison->getPoids();
                this->desequiper(*this->myCombinaison);
                }
            else if (reponse.compare("N") == 0)break;
            }
            if (this->myCeinture == NULL)if(new_p<this->perso->getChargeMax()) this->myCeinture = (Ceinture*)&o;
                                        else{
                                        cout<<"Objet trop lourd pour etre equipe"<<endl;
                                        break;
                                        }
            else {

                cout << "Objet déjà en place  " << this->myCeinture->getNom() << endl << "Voulez vous le remplacer? O/N" << endl;
                getline(cin,reponse);
                if (reponse.compare("O") == 0)if (new_p-this->myCeinture->getPoids()<this->perso->getChargeMax()){
                    this->desequiper(*this->myCeinture);
                    this->myCeinture= (Ceinture*)&o;
                }
                else {
                    cout << "Objet trop lourd pour etre equipe" << endl;
                }

            }
        break;
        case Objet::CHAPEAU:
            if (this->myCombinaison != NULL){ cout << "Combinaison équipé, voulez vous l'enlever? O/N" << endl;
            getline(cin, reponse);
            if (reponse.compare("O") == 0) {
                new_p -= this->myCombinaison->getPoids();
                this->desequiper(*this->myCombinaison);
                }
            else if (reponse.compare("N") == 0)break;
            }
            if (this->myChapeau == NULL) if(new_p<this->perso->getChargeMax()) this->myChapeau =(Chapeau*) &o;
                                        else{
                                        cout<<"Objet trop lourd pour etre equipe"<<endl;
                                        break;
                                        }
            else {

                cout << "Objet déjà en place  " << this->myChapeau->getNom() << endl << "Voulez vous le remplacer? O/N" << endl;
                getline(cin,reponse);
                if (reponse.compare("O") == 0)if (new_p-this->myChapeau->getPoids()<this->perso->getChargeMax()){
                    this->desequiper(*this->myChapeau);
                    this->myChapeau=(Chapeau*) &o;
                }
                else {
                    cout << "Objet trop lourd pour etre equipe" << endl;
                }

            }
        break;
        case Objet::COLLIER:
            if (this->myCollier == NULL) if(new_p<this->perso->getChargeMax()) this->myCollier = (Collier*)&o;
                                        else{
                                        cout<<"Objet trop lourd pour etre equipe"<<endl;
                                        break;
                                        }
            else {

                cout << "Objet déjà en place  " << this->myCollier->getNom() << endl << "Voulez vous le remplacer? O/N" << endl;
                getline(cin,reponse);
                if (reponse.compare("O") == 0)if (new_p-this->myCollier->getPoids()<this->perso->getChargeMax()){
                    this->desequiper(*this->myCollier);
                    this->myCollier= (Collier*)&o;
                }
                else {
                    cout << "Objet trop lourd pour etre equipe" << endl;
                }

            }
        break;
        case Objet::COMBINAISON:
            string reponse;
            if (this->myArmure != NULL || this->myBottes!=NULL || this->myCeinture!=NULL || this->myChapeau!=NULL || this->myCombinaison!=NULL){
                cout << "Les objets suivant vont être retirés pour mettre la combinaison: " << endl;
                int ptmp= 0;
                if (this->myArmure != NULL){ cout << this->myArmure->getNom() << endl;
                ptmp+= this->myArmure->getPoids();
                }
                if(this->myBottes!=NULL){ cout << this->myBottes->getNom() << endl;
                ptmp+= this->myBottes->getPoids();
                }
                if(this->myCeinture!=NULL){ cout << this->myCeinture->getNom() << endl;
                ptmp+= this->myCeinture->getPoids();
                }
                if(this->myChapeau!=NULL){ cout << this->myChapeau->getNom() << endl;
                ptmp+= this->myChapeau->getPoids();
                }
                if(this->myCombinaison!=NULL){ cout << this->myCombinaison->getNom() << endl;
                ptmp+= this->myCombinaison->getPoids();
                }
                if  (new_p - ptmp + o.getPoids() > this->perso->getChargeMax()){
                    cout << "poids final trop important, annulation" << endl;
                    break;
                }
                cout << "Continuer ? O/N" << endl;
                getline(cin,reponse);
                if (reponse.compare("O") == 0){

                    if(this->myArmure != NULL)this->desequiper(*this->myArmure);
                    if(this->myBottes!=NULL)this->desequiper(*this->myBottes);
                    if(this->myCeinture!=NULL)this->desequiper(*this->myCeinture);
                    if(this->myChapeau!=NULL) this->desequiper(*this->myChapeau);
                    if(this->myCombinaison!=NULL)this->desequiper(*this->myCombinaison);
                    this->myCombinaison= (Combinaison*)&o;
                }
            }
            
        break;
    }
    this->updateStats();
}
/**
 * Desequipe un objet et le met dans le sac.
 * Si il n'y a pas de place dans l'inventaire, l'objet est quand meme déséquiper mais n'a plus de conteneur, comme s'il tombait au sol
 */
void Equipement::desequiper(ObjetEquipable &o){

        switch (o.getType()){
            case Objet::ARMURE:
                if (this->myArmure == &o){                    
                this->myArmure=NULL;
                if(!this->perso->mySac->Ajouter(o)) cout<<"objet jeter perdu a jamais, ahahaha, bien fait pour toi"<<endl;
                }
                else cout << "L'objet n'est pas équipé" << endl;
                break;
            case Objet::BAGUE:
                if (this->myBague1 == &o){
                this->myBague1=NULL;
                if(!this->perso->mySac->Ajouter(o)) cout<<"objet jeter perdu a jamais, ahahaha, bien fait pour toi"<<endl;
                }
                else if (this->myBague2 == &o){
                this->myBague2=NULL;
                if(!this->perso->mySac->Ajouter(o)) cout<<"objet jeter perdu a jamais, ahahaha, bien fait pour toi"<<endl;
                }
                else cout << "L'objet n'est pas équipé" << endl;
                break;
            case Objet::BOTTES:
                if (this->myBottes == &o){
                this->myBottes=NULL;
                if(!this->perso->mySac->Ajouter(o)) cout<<"objet jeter perdu a jamais, ahahaha, bien fait pour toi"<<endl;
                }
                else cout << "L'objet n'est pas équipé" << endl;
                break;
            case Objet::CEINTURE:
                if (this->myCeinture == &o){
                this->myCeinture=NULL;
                if(!this->perso->mySac->Ajouter(o)) cout<<"objet jeter perdu a jamais, ahahaha, bien fait pour toi"<<endl;
                }
                else cout << "L'objet n'est pas équipé" << endl;
                break;
            case Objet::CHAPEAU:
                if (this->myChapeau == &o){
                this->myChapeau=NULL;
                if(!this->perso->mySac->Ajouter(o)) cout<<"objet jeter perdu a jamais, ahahaha, bien fait pour toi"<<endl;
                }
                else cout << "L'objet n'est pas équipé" << endl;
                break;
            case Objet::COLLIER:
                if (this->myCollier == &o){
                this->myCollier=NULL;
                if(!this->perso->mySac->Ajouter(o)) cout<<"objet jeter perdu a jamais, ahahaha, bien fait pour toi"<<endl;
                }
                else cout << "L'objet n'est pas équipé" << endl;
                break;
            case Objet::COMBINAISON:
                if (this->myCombinaison == &o){
                this->myCombinaison=NULL;
                if(!this->perso->mySac->Ajouter(o)) cout<<"objet jeter perdu a jamais, ahahaha, bien fait pour toi"<<endl;
                }
                else cout << "L'objet n'est pas équipé" << endl;
                break;

        }
    this->updateStats();
}

/**
 * Retourne le poids total de l'equipement porté
 */
int Equipement::getPoids(){
    int poids=0;
    if(this->myArmure!=NULL) poids+=this->myArmure->getPoids();
    if(this->myBague1!=NULL) poids+=this->myBague1->getPoids();
    if(this->myBague2!=NULL) poids+=this->myBague2->getPoids();
    if(this->myBottes!=NULL) poids+=this->myBottes->getPoids();
    if(this->myCeinture!=NULL) poids+=this->myCeinture->getPoids();
    if(this->myChapeau!=NULL) poids+=this->myChapeau->getPoids();
    if(this->myCollier!=NULL) poids+=this->myCollier->getPoids();
    if(this->myCombinaison!=NULL) poids+=this->myCombinaison->getPoids();
    return poids;
}

/**
 * Met à jour les stats en fonction de l'équipement
 */
void Equipement::updateStats(){
    this->perso->setDef(0);
    this->perso->setFur(0);
    this->perso->setInt(0);
    
    if(this->myCombinaison!=NULL){
        this->perso->setDef(this->perso->Defense+this->myCombinaison->bonus_def) ;
        this->perso->setFur(this->perso->Furtivite+this->myCombinaison->bonus_fur) ;
        this->perso->setInt(this->perso->Intelligence+this->myCombinaison->bonus_int) ;
    }
    if(this->myChapeau!=NULL) {
        this->perso->setDef(this->perso->Defense+this->myChapeau->bonus_def) ;
        this->perso->setFur(this->perso->Furtivite+this->myChapeau->bonus_fur) ;
        this->perso->setInt(this->perso->Intelligence+this->myChapeau->bonus_int) ;
    }
    if(this->myBague1!=NULL) {
        this->perso->setDef(this->perso->Defense+this->myBague1->bonus_def) ;
        this->perso->setFur(this->perso->Furtivite+this->myBague1->bonus_fur) ;
        this->perso->setInt(this->perso->Intelligence+this->myBague1->bonus_int) ;
    }
    if(this->myBague2!=NULL){
        this->perso->setDef(this->perso->Defense+this->myBague2->bonus_def) ;
        this->perso->setFur(this->perso->Furtivite+this->myBague2->bonus_fur) ;
        this->perso->setInt(this->perso->Intelligence+this->myBague2->bonus_int) ;
    }
    if(this->myCollier!=NULL){
        this->perso->setDef(this->perso->Defense+this->myCollier->bonus_def) ;
        this->perso->setFur(this->perso->Furtivite+this->myCollier->bonus_fur) ;
        this->perso->setInt(this->perso->Intelligence+this->myCollier->bonus_int) ;
    }
    if(this->myCeinture!=NULL){
        this->perso->setDef(this->perso->Defense+this->myCeinture->bonus_def) ;
        this->perso->setFur(this->perso->Furtivite+this->myCeinture->bonus_fur) ;
        this->perso->setInt(this->perso->Intelligence+this->myCeinture->bonus_int) ;
    }
    if(this->myArmure!=NULL){
        this->perso->setDef(this->perso->Defense+this->myArmure->bonus_def) ;
        this->perso->setFur(this->perso->Furtivite+this->myArmure->bonus_fur) ;
        this->perso->setInt(this->perso->Intelligence+this->myArmure->bonus_int) ;
    }
    if(this->myBottes!=NULL) {
        this->perso->setDef(this->perso->Defense+this->myBottes->bonus_def) ;
        this->perso->setFur(this->perso->Furtivite+this->myBottes->bonus_fur) ;
        this->perso->setInt(this->perso->Intelligence+this->myBottes->bonus_int) ;
    }
}


/**
 * Affiche l'equipement sur la sortie standard
 */
    void Equipement::AfficheEquipement(){
    
    cout << endl << "######## Equipement courant ########" << endl << endl ;
    cout<< setw(12) << left <<" type"<<setw(20) <<" nom de l'objet "<<setw(20) <<" poids objet "<<setw(20) <<" bonus intelligence "<<setw(20) <<" bonus furtivite "<<setw(20) <<" bonus defense"<<endl<<endl;

        cout<<setw(12) << left <<"Armure \t\t";
        if(this->myArmure!=NULL){
            this->myArmure->CaracteristiqueObjets();
        }
        else cout<<"\tplace disponible"<<endl;

        cout<<setw(12) << left <<"Bague1 \t\t";
        if(this->myBague1!=NULL){
            this->myBague1->CaracteristiqueObjets();
        }
        else cout<<"\tplace disponible"<<endl;

        cout<<setw(12) << left <<"Bague2 \t\t";
        if(this->myBague2!=NULL){
            this->myBague2->CaracteristiqueObjets();
        }
        else cout<<"\tplace disponible"<<endl;

        cout<<setw(12) << left <<"Bottes \t\t";
        if(this->myBottes!=NULL){
            this->myBottes->CaracteristiqueObjets();
        }
        else cout<<"\tplace disponible"<<endl;


        cout<<setw(12) << left <<"Ceinture \t";
        if(this->myCeinture!=NULL){
            this->myCeinture->CaracteristiqueObjets();
        }
        else cout<<"\tplace disponible"<<endl;

        cout<<setw(12) << left <<"Chapeau \t";
        if(this->myChapeau!=NULL){
            this->myChapeau->CaracteristiqueObjets();
        }
        else cout<<"\tplace disponible"<<endl;

        cout<<setw(12) << left <<"Collier \t";
        if(this->myCollier!=NULL){
            this->myCollier->CaracteristiqueObjets();
        }
        else cout<<"\tplace disponible"<<endl;

        cout<<setw(12) << left <<"Combinaison \t";
        if(this->myCombinaison!=NULL){
            this->myCombinaison->CaracteristiqueObjets();
        }
        else cout<<"\tplace disponible"<<endl;


    }
/**
 * Desequipe un objet à partir de son nom. Utilise Equipement::Desequiper
 */
    void Equipement::choixDesequiper(string obj){



    if(obj=="armure"){
      if(this->myArmure==NULL) cout<<"pas d ARMURE"<<endl;
        else this->desequiper(* this->myArmure);
    }
    if(obj=="bague1"){
        if(this->myBague1==NULL) cout<<"pas de BAGUE1"<<endl;
        else this->desequiper(* this->myBague1);
    }
    if(obj=="bague2"){
        if(this->myBague2==NULL) cout<<"pas de BAGUE2"<<endl;
        else this->desequiper(* this->myBague2);
    }
    if(obj=="bottes"){
        if(this->myBottes==NULL) cout<<"pas de BOTTES"<<endl;
        else this->desequiper(* this->myBottes);
    }
    if(obj=="ceinture"){
        if(this->myCeinture==NULL) cout<<"pas de CEINTURE"<<endl;
        else this->desequiper(* this->myCeinture);
    }
    if(obj=="chapeau"){
        if(this->myChapeau==NULL) cout<<"pas de CHAPEAU"<<endl;
        else this->desequiper(* this->myChapeau);
    }
    if(obj=="collier"){
        if(this->myCollier==NULL) cout<<"pas de COLLIER"<<endl;
        else this->desequiper(* this->myCollier);
    }
    if(obj=="combinaison"){
        if(this->myCombinaison==NULL) cout<<"pas de COMBINAISON"<<endl;
        else this->desequiper(* this->myCombinaison);
    }
 }

/**
 * Retire un objet par choix sur la sortie standard
 */
 void Equipement::choixJeter(){

    string tmp;
    int num;
    istringstream iss(tmp);



    cout<<"choisir l objet a retirer"<<endl;
    cout<<"1 : Armure \n";
    cout<<"2 : Bague1 \n";
    cout<<"3 : Bague2 \n";
    cout<<"4 : Bottes \n";
    cout<<"5 : Ceinture \n";
    cout<<"6 : Chapeau \n";
    cout<<"7 : Collier \n";
    cout<<"8 : Combinaison \n\n";

    getline(cin,tmp);
    iss.str(tmp);
    iss>>num;
    iss.clear();


        switch (num){
            case 1:
                if(this->myArmure==NULL) cout<<"pas d ARMURE"<<endl;
                else this->myArmure=NULL;
                break;
            case 2:
                if(this->myBague1==NULL) cout<<"pas de BAGUE1"<<endl;
                else this->myBague1=NULL;
                break;
            case 3:
                if(this->myBague2==NULL) cout<<"pas de BAGUE2"<<endl;
                else this->myBague2=NULL;
                break;
            case 4:
                if(this->myBottes==NULL) cout<<"pas de BOTTES"<<endl;
                else this->myBottes=NULL;
                break;
            case 5:
                if(this->myCeinture==NULL) cout<<"pas de CEINTURE"<<endl;
                else this->myCeinture=NULL;
                break;
            case 6:
                if(this->myChapeau==NULL) cout<<"pas de CHAPEAU"<<endl;
                else this->myChapeau=NULL;
                break;
            case 7:
                if(this->myCollier==NULL) cout<<"pas de COLLIER"<<endl;
                else this->myCollier=NULL;
                break;
            case 8:
                if(this->myCombinaison==NULL) cout<<"pas de COMBINAISON"<<endl;
                else this->myCombinaison=NULL;
                break;
            default:
                 cout<<"choix incorrect"<<endl;
        }
        cout<<endl;
    }